import { setToken, getToken } from '@/utils/auth'
import { loginAPI } from '@/api/user'
// 状态
const state = {
  token: getToken()
}

// 同步任务：存储token到state
const mutations = {
  /**
   * 存储token到state
   * @param {*} state 状态对象
   * @param {*} token  用户token
   */
  setUserToken(state, token) {
    state.token = token
    // 将token做本地持久化
    setToken(token)
  }
}

// 异步任务：发送登录请求 获取token
const actions = {
  /**
   * 发送登录请求
   * @param {*} context 上下文
   * @param {object} loginForm 登录表单数据
   */
  async loginAction(context, loginForm) {
    // 发送登录请求
    const token = await loginAPI(loginForm)
    // 发送请求 获取token
    context.commit('setUserToken', token)
  }
}

export default {
  // 注意点: 必须开启命名空间
  namespaced: true,
  state,
  mutations,
  actions
}
